home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / BASIC / 0006.ZIP / B-SIMPLE.DOC < prev    next >
Text File  |  1984-02-25  |  15KB  |  239 lines

  1.              Basic Structured IMPLEmentation (PROGRAMMER'S AID)
  2.  
  3. B-SIMPLE helps you write good top-down, modular programs in Basic.
  4. You don't have to be a programmer to use it.  Your programs should
  5. be simple to write, be simple to debug, and be simple to change later.
  6.  
  7. HOW TO USE IT: RUN "B-SIMPLE"
  8.  
  9. B-SIMPLE is menu driven.  When RUN, it establishes a skeleton for your
  10. program, using Blocks of 100 line numbers. You can have up to 199 modules
  11. for SUBROUTINES, plus ten for INITIALIZATION, and ten for MAIN LINE PROGRAM.
  12. B-SIMPLE helps you add, list, renumber, or delete modules. It keeps a
  13. directory and puts in module names, etc. to make your listing easier to
  14. understand. When you are done, you can delete B-SIMPLE (quite simply).
  15.  
  16. A BLOCK IS 100 LINE NUMBERS
  17.  
  18. Each module has a reserved block of 100 line numbers. Up to 22 lines may be
  19. used for the module (a screen's worth). B-SIMPLE uses four of those lines for
  20. module name, RETURN, etc. You can use up to 18 lines.
  21. Keeping modules short is good programming!"
  22.  
  23. SUBROUTINES are put from line #100 to line #20000.
  24. From the menu you can:
  25.   1 or A=ADD a new module (and enter code using AUTO)
  26.   2 or L=LIST an old module (and edit if desired)
  27.   3 or R=RENUMBER & LIST an old module (and edit if desired)
  28.   4     =DELETE an old module, or
  29.   5     =DIRECTORY (display a list of all modules)
  30.  
  31. INITIALIZATION and the MAIN LINE PROGRAM are between lines #20000 and #22000.
  32. From the menu you can:
  33.   6=LIST Blocks of INITIALIZATION or MAIN LINE PROGRAM, or
  34.   7=REINITIALIZE Your Program Information
  35. -------------------------------
  36. Menu -- 1 or A=ADD a new module
  37. -------------------------------
  38. B-SIMPLE asks for module number, MN (1 thru 199), and name (up to 20
  39. characters.) It then prints out 7 lines of information, and asks you to
  40.                     HIT RETURN 7 TIMES.
  41.  
  42. This puts your module's name in the directory, and in a remark on line MN01 of
  43. the block. RETURN is put on line MN99. A blank remark is placed above your
  44. module (on line MN00) and below your module, to make the listing look good.
  45. AUTO line numbering starts at line MN10 of your block, with steps of 5 lines.
  46. Your code can go from line MN10 (always the first line of code) thru line MN95.
  47. RETURN is always line MN99 of the block.
  48.  
  49. You can stop AUTO line numbering with CTRL-BREAK. Type RUN (or hit F2) to get
  50. back to the B-SIMPLE menu.
  51. You call this subroutine, from another subroutine, or the MAIN LINE PROGRAM,
  52. with a line that says: GOSUB MN00 (or GOSUB MN10 if speed is critical).
  53.  
  54. MS$="  Menu -- 2 or L=LIST a module (and edit if desired)  ":GOSUB 61110:PRINT
  55. PRINT "  B-SIMPLE asks for module number, MN (1 thru 199), and lists the module.":PRINT
  56. PRINT "  You can add lines, change lines, etc., using normal BASIC editing.":PRINT
  57. PRINT "  You can get back to the B-SIMPLE menu by typing RUN (or hitting F2). If you   have inserted code on lines that don't end in 0 or 5, you should go back to the B-SIMPLE menu and select 3 -- RENUMBER.":PRINT
  58. LOCATE 25,20:PRINT "Hit RETURN";:LOCATE 25,10:INPUT "Ready";X$
  59. CLS
  60. MS$="  Menu -- 3 or R=RENUMBER & LIST (and edit if desired)  ":GOSUB 61110:PRINT
  61. PRINT "  B-SIMPLE asks for module number, MN (1 thru 199), renumbers, and then lists   the module.":PRINT
  62. PRINT "  You can add lines, change lines, etc., using normal BASIC editing.":PRINT
  63. PRINT "  You can get back to the B-SIMPLE menu by typing RUN (or hitting F2). If you   have inserted code on lines that don't end in 0 or 5, you should go back to the B-SIMPLE menu and select 3 -- RENUMBER.":PRINT
  64. LOCATE 25,20:PRINT "Hit RETURN";:LOCATE 25,10:INPUT "Ready";X$
  65. CLS
  66. MS$="  Menu -- 4=DELETE an old module  ":GOSUB 61110:PRINT
  67. PRINT "  B-SIMPLE asks for module number, MN (1 thru 199), and prints out the line     numbers it uses. It asks you to HIT RETURN a sufficient number of times to      delete the lines.":PRINT
  68. PRINT "  This removes the subroutine and it's entry in the B-SIMPLE directory.":PRINT
  69. PRINT "  You can get back to the B-SIMPLE menu by typing RUN (or hitting F2).":PRINT
  70. PRINT "  (By the way, if you try to DELETE a non-existent module, or one that has no   code on line MN10, you'll get an error  message, but no harm will be done.)":PRINT
  71. LOCATE 25,20:PRINT "Hit RETURN";:LOCATE 25,10:INPUT "Ready";X$
  72. CLS
  73. MS$="  Menu -- 5=DIRECTORY of modules  ":GOSUB 61110:PRINT
  74. PRINT "  B-SIMPLE lists the directory.  If there are over 20 entries, CTRL-NUM LOCK    will make the listing pause.":PRINT
  75. PRINT "  You can get back to the B-SIMPLE menu by typing RUN (or hitting F2).":PRINT
  76. LOCATE 25,20:PRINT "Hit RETURN";:LOCATE 25,10:INPUT "Ready";X$
  77. CLS
  78. MS$="  Menu -- 6=LIST INITIALIZATION or MAIN LINE PROGRAM blocks  ":GOSUB 61110:PRINT
  79. PRINT "  B-SIMPLE tells you where they are and asks for a block number. It then lists  the block you want.":PRINT
  80. PRINT "  You can add lines, change lines, etc., using normal BASIC editing.":PRINT
  81. PRINT "  You can get back to the B-SIMPLE menu by typing RUN (or hitting F2).":PRINT
  82. LOCATE 25,20:PRINT "Hit RETURN";:LOCATE 25,10:INPUT "Ready";X$
  83. CLS
  84. MS$="  Menu -- 7=REINITIALIZE Your Program Information":GOSUB 61110:PRINT
  85. PRINT "  B-SIMPLE allows you to change the way your name, address, program name,       version number, date, etc. appear in title block":PRINT
  86. PRINT "  You'll be prompted to enter your name, address, phone, program name, version, date, etc. B-SIMPLE will then print several lines of information, and ask you toHIT RETURN 4 TIMES.":PRINT
  87. PRINT "  This will update the title block, and send you back to the B-SIMPLE menu.":PRINT
  88. LOCATE 25,20:PRINT "Hit RETURN";:LOCATE 25,10:INPUT "Ready";X$
  89. CLS
  90. MS$="  TO RUN YOUR PROGRAM ":GOSUB 61110:PRINT
  91. PRINT "  Any time you see Ok and a flashing cursor, you can type RUN 10 (or hit F10)   and YOUR program will run.":PRINT:PRINT:PRINT
  92. MS$="  TO DELETE B-SIMPLE (quite simply)  ":GOSUB 61110:PRINT
  93. PRINT "  When your program is done, and you don't need B-SIMPLE anymore, just:":PRINT:PRINT"DELETE 0-9":PRINT"DELETE 41000-65100  (if you want to keep the B-SIMPLE directory), or":PRINT"DELETE 40000-65100  (if you don't want the directory)."
  94. PRINT:PRINT"  Then you can run YOUR program by simply typing RUN.":PRINT
  95. LOCATE 25,20:PRINT "Hit RETURN";:LOCATE 25,10:INPUT "Ready";X$
  96. RETURN:'from instructions
  97. '
  98. 'SIMPLE goes from here to line 65100
  99. '
  100. 'message sr
  101. COLOR 0,7 : PRINT " "MS$" ": COLOR 7,0
  102. RETURN:'from message sr
  103. '
  104. 'compute c sr
  105. C = L + 4
  106. F = 1 : P = PEEK (C) : IF ( P = 137 OR P = 141 OR P = 205 OR P=140 OR P=142 OR P=161 OR P=168 ) AND PEEK (C+1) = 32 THEN C = C + 2  ELSE GOTO  61295
  107. IF P = 141 THEN F = 0
  108. GOSUB 61310 : IF C > N - 1 THEN 61299
  109. IF P = 137 OR P = 141 THEN 61215
  110. IF P = 13 OR P = 14 GOTO 61240 ELSE GOTO 61295
  111. IF P = 13 GOTO 61260
  112. C = C + 1 : FOR E = 1 TO A : IF FNR (C) = L (E) THEN 61255
  113. NEXT E : IF F = 1 THEN MS$ = "WARNING MODULE JUMPS TO ANOTHER MODULE " : GOSUB 61110 : GOTO 61260 ELSE GOTO 61260
  114. POKE C+1 , FNM (E) : POKE C , FNL (E) - ( FNM (E) * 256 )
  115. C = C + 2 : GOSUB 61310 : IF C > N-1 THEN 61299
  116. IF PEEK (C) = 44 THEN C = C + 1 : GOTO 61225 ELSE GOTO 61295
  117. C = C + 1 : IF C < = N - 1 THEN 61215
  118. RETURN:'from compute c sr
  119. '
  120. 'figure c sr
  121. FOR I = C TO N- 1 : IF PEEK (I) = 32 THEN C = C + 1 ELSE I = N
  122. NEXT I : P = PEEK (C)
  123. RETURN :'from figure c sr
  124. '
  125. 'mess sr (add, list, renumber, delete)
  126. ON C GOSUB 61435,64610,61425,61415:GOTO 61490
  127. GOSUB 61510: CLS : LOCATE 3,1,0 : PRINT 41000!+M:PRINT 40000!+M:PRINT 100*M+1
  128. FOR I = 1 TO A : PRINT L(I) : NEXT I :PRINT M*100+99: LOCATE 1,1:MS$="HIT ENTER KEY "+STR$(4+A)+" TIMES":GOSUB 61110:RETURN:'within module
  129. GOSUB 61510 : IF FNL (A) >= R THEN MS$ = "CAN'T RESEQUENCE - TOO MANY LINES IN MODULE." : GOSUB 61110 :C=9: RETURN:'within module                             61430 N = LO : FOR B = 1 TO A : GOSUB 61610 : GOSUB 61210 : NEXT B : return:'within module
  130. N = LO : FOR B = 1 TO A : GOSUB 61610 : GOSUB 61210 : NEXT B : GOTO 61490
  131. PRINT:INPUT "MODULE NAME (UP TO 20 CHAR) "; N$ : IF LEN(N$) > 20 THEN MS$ = "MODULE NAME TOO LONG" : GOSUB 61110 : GOTO 61435
  132. CLS : LOCATE 3,1,0
  133. PRINT 41000!+M TAB(8);"color 0,7:PRINT "; CHR$(34)"                      " CHR$(34)": color 7,0 : LIST "; Q-10 ; -R-5
  134. LOCATE 3,26,0:PRINT N$
  135. PRINT 40000!+M;"' *"SPC(13+(M>9)+(M>99));M;" | ";N$;:LOCATE 4,77:PRINT"*"
  136. PRINT Q-10;"'":PRINT Q-9;"'   "N$:PRINT Q+89;" RETURN : 'from "N$:PRINT Q+90;"'"
  137. PRINT "MS$="+CHR$(34)+"CTRL-BREAK ends AUTO entry"+CHR$(34)+":GOSUB 61110 :AUTO"Q","S
  138. LOCATE 1,1 : MS$ = "HIT ENTER KEY 7 TIMES"  : GOSUB 61110 : RETURN :'within module
  139. IF K=3 THEN C=2:GOTO 61410
  140. END :'from mess sr
  141. '
  142. 'def sr
  143. DEF FNR (X) = PEEK (X) + 256 * PEEK (X+1) : DEF FNL (X) = S * (X-1) + T : N = FNR (48) : DEF FNM (X) = INT( FNL (X) / 256 )
  144. L = N : N = FNR (L) : X = FNR (L+2) : LO = L : IF X < Q THEN 61520
  145. A = A + 1 : L(A) = X : L = N : N = FNR (L) : X = FNR (L+2) : IF X < = R THEN 61530
  146. IF L(1) > R AND  C = 3 THEN MS$ = "CAN'T RENUMBER A NULL MODULE" : GOSUB 61110 : GOTO 61599
  147. N=LO:GOTO 61599
  148. RETURN :'from def sr
  149. 'l n sr
  150. L = N : N = FNR (L) : POKE L + 3 , FNM (B) : POKE  L+2  , FNL (B) - 256 * FNM (B)
  151. RETURN :'from l n sr
  152. '
  153. '
  154. 'your choice sr
  155. L=-200:SOUND 370,1
  156. COLOR 18+16*(L<0),7:LOCATE Y,2:PRINT " YOUR CHOICE - "+F$+" - ? ";:COLOR 0,7
  157. X$=INKEY$:DEF SEG:POKE 106,0:IF X$<>"" THEN 64150
  158. L=L+1:IF L<1 THEN 64120
  159. SOUND L*37,1:SOUND 32767,14:GOTO 64120
  160. LOCATE Y,2:FOR L=1 TO LEN(F$)+20:PRINT " ";:NEXT:'x$ contains key hit
  161. COLOR 7,0
  162. RETURN :'from your choice sr
  163. '
  164. 'quick menu
  165. KEY OFF:COLOR 15,4:CLS:LOCATE 1,2:PRINT "       SELECT BY NUMBER          B-SIMPLE (Basic Structured IMPLEmentation)              (OR LETTER)             Version 1.0 2-82 Ira Glickstein 8-662-4202"
  166. LOCATE 5,2:PRINT"1 or A -- ADD a module and enter code"
  167. LOCATE 7,2:PRINT"2 or L -- LIST a module (and edit if desired)"
  168. LOCATE 9,2:PRINT"3 or R -- RENUMBER a module, then list it"
  169. LOCATE 11,2:PRINT"4 -- DELETE a module"
  170. LOCATE 13,2:PRINT"5 -- DIRECTORY display of modules"
  171. LOCATE 15,2:PRINT"6 -- List/Edit INITIALIZATION or MAIN LINE PROGRAM Blocks"
  172. LOCATE 17,2:PRINT "7 -- REINITIALIZE your program information"
  173. LOCATE 19,2:PRINT"8 -- INSTRUCTIONS"
  174. LOCATE 21,2:PRINT"9 -- QUIT and exit program"
  175. LOCATE 24,34:PRINT G$;:LOCATE 25,34:PRINT P$;
  176. Y=23:GOSUB 64110 CHOICE:K=ASC(X$):K=-1*(49*(K=65 OR K=97)+50*(K=76 OR K=108)+51*(K=82 OR K=114)+K*(K>47 AND K<58))-48:PRINT K:IF K>0 AND K<10 THEN 64290 ELSE 64250
  177. KEY ON
  178. RETURN :'from menu sr
  179. '
  180. 'directory sr
  181. CLS
  182. LIST 40000-40399
  183.    RETURN : 'from directory sr
  184. '
  185. 'LIST SR
  186. CLS :ON ERROR GOTO 64680
  187. ON M GOSUB 41001,41002,41003,41004,41005,41006,41007,41008,41009
  188. 64620 ON M-9 GOSUB 41010,41011,41012,41013,41014,41015,41016,41017,41018,41019,41020,41021,41022,41023,41024,41025,41026,41027,41028,41029,41030,41031,41032,41033,41034,41035,41036,41037,41038,41039,41040,41041,41042,41043,41044,41045,41046,41047,41048
  189. 64630 ON M-48 GOSUB 41049,41050,41051,41052,41053,41054,41055,41056,41057,41058,41059,41060,41061,41062,41063,41064,41065,41066,41067,41068,41069,41070,41071,41072,41073,41074,41075,41076,41077,41078,41079,41080,41081,41082,41083,41084,41085,41086,41087
  190. 64640 ON M-87 GOSUB 41088,41089,41090,41091,41092,41093,41094,41095,41096,41097,41098,41099,41100
  191. 64650 ON M-100 GOSUB 41101,41102,41103,41104,41105,41106,41107,41108,41109
  192. 64660 ON M-109 GOSUB 41110,41111,41112,41113,41114,41115,41116,41117,41118,41119,41120,41121,41122,41123,41124,41125,41126,41127,41128,41129,41130,41131,41132,41133,41134,41135,41136,41137,41138,41139,41140,41141,41142,41143,41144,41145,41146,41147,41148
  193. 64670 ON M-148 GOSUB 41149,41150,41151,41152,41153,41154,41155,41156,41157,41158,41159,41160,41161,41162,41163,41164,41165,41166,41167,41168,41169,41170,41171,41172,41173,41174,41175,41176,41177,41178,41179,41180,41181,41182,41183,41184,41185,41186,41187
  194. 64675 ON M-187 GOSUB 41188,41189,41190,41191,41192,41193,41194,41195,41196,41197,41198,41199
  195. 64677 ON M-199 GOSUB 41200,41201,41202,41203,41204,41205,41206,41207,41208,41209,41210,41211,41212,41213,41214,41215,41216,41217,41218,41219
  196. 64680 IF ERR=8 THEN PRINT "NO SUCH MODULE"
  197. 64690 ON ERROR GOTO 0
  198. 64699    RETURN : 'from LIST SR
  199. 64700 '
  200. 64701 'list init & main sr
  201. 64710 CLS:PRINT "INITIALIZATION utilizes blocks #200 thru 209":PRINT
  202. 64720 PRINT"MAIN LINE PROGRAM utilizes blocks #210 thru 219":PRINT
  203. 64730 INPUT "ENTER BLOCK NUMBER (200 - 219): ",M:IF M<200 OR M>219 THEN 64710
  204. 64740 GOSUB 64610
  205. 64799  RETURN :'from list init & main sr
  206. 64800 '
  207. 64900 '
  208. 64910 CLS:PRINT"B-SIMPLE Version 1.0 2-82 Ira Glickstein 8-662-4202"
  209. 64920 PRINT:PRINT:PRINT"TO GET STARTED I'LL NEED A BIT OF PERSONAL INFORMATION"
  210. 64930 LOCATE 10,1:PRINT "Please enter your name, address, phone, etc. (up to 40 characters)                                         <-------------------------------------->              PROGRAMMERS IDENTITY:     ";P$
  211. 64935 LOCATE 12,1:INPUT " PROGRAMMERS IDENTITY:   ";P$:P$=LEFT$(P$,40)
  212. 64940 LOCATE 14,1:PRINT "Please enter your program's name, version, date, etc. (up to 40 characters)                                <-------------------------------------->              PROGRAM IDENTIFICATION:   ";G$
  213. 64945 LOCATE 16,1:INPUT " PROGRAM IDENTIFICATION: ";G$:G$=LEFT$(G$,40)
  214. 64950 CLS:LOCATE 3,1:PRINT"0 GOTO 65010 :'To delete B-SIMPLE, just DELETE 0-9, DELETE 41000-65100":LOCATE 4,1:PRINT"15 '  * "G$;:LOCATE 5,1:PRINT"16 '  * "P$;:LOCATE 4,50:PRINT"* I used B-SIMPLE 1.0 2-82 *";:LOCATE 5,50:PRINT"* by Glickstein 8-662-4202 *
  215. 64955 LOCATE 6,1:PRINT"65015 G$="+CHR$(34)+G$+CHR$(34) : PRINT "65016 P$="+CHR$(34)+P$+CHR$(34) :PRINT"RUN"
  216. 64960 LOCATE 1,1:MS$=" HIT ENTER KEY 6 TIMES ":GOSUB 61110:END
  217. 64999  RETURN :'from initializaton sr
  218. 65000 '
  219. 65001 'main line program -- simple
  220. 65005 GOSUB 64910 : 'initialization of B-SIMPLE
  221. 65010 CLEAR:CLS:POKE 106,0:KEY 10,"run 10"+CHR$(13)
  222. 65015 G$="test"
  223. 65016 P$="gene plantz"
  224. 65020 GOSUB 64210 :'menu sr (K is choice: 1=add, 2=list, 3=renumber, 4=delete, 5=directory, 6=list init,main,data, 7=reinit your info, 8=instructions, 9=quit)
  225. 65030 IF K=5 OR K=6 OR K=7 OR K=8 THEN 65070
  226. 65033 IF K=5 THEN 65060
  227. 65035 IF K=9 THEN 65099
  228. 65040 IF K=5 THEN 65070
  229. 65050 IF K=9 THEN 65099
  230. 65060 CLS:PRINT:INPUT "MODULE NUMBER (1-199) "; M : Q = M * 100+10 : R = Q + 85 : S = 5: T = Q: U = 700 + M - 100 * (M>39) - 100 * (M>69) : IF M < 1 OR M > 199 THEN 65010 ELSE DIM L (40)
  231. 65070 CLS:PRINT"I'm working on it!":C=K:ON K GOSUB 61410,64610,61410,61410,64510,64710,64910,50010
  232. 65080 IF K=3 AND C<>9 THEN GOSUB 64610
  233. 65090 GOTO 65010
  234. 65099 END :'of simple
  235. 65100 '
  236. 65120 '
  237. 65130 '
  238. 65140 'LAST            LAST
  239.